/**
 * 
 */
package br.com.freelancer.util;

import java.util.Collection;
import java.util.List;

/**
 * 
 * @author tiago nogueira
 *
 */
public class ObjectHelper {
	/**
	 * verifica se um objeto é não nulo
	 * @param o
	 * @return
	 */
	public static boolean isNotNull(Object o){
		return o != null;
	}

	public static boolean isNotEmpty(String str) {
		if(isNotNull(str)){
			return !str.isEmpty();
		}
		return false;
	}

	public static boolean isNotEmpty(Object[] strArray) {
		if(isNotNull(strArray)){
			return strArray.length > 0;
		}
		return false;
	}
	public static boolean isEmpty(Object o){
		if(isNull(o)){
			return true;
		}
		if(o.getClass().equals(int.class)){
			return isEmpty(Integer.parseInt(String.valueOf(o)));
		}else{

			if(o.getClass().equals(Collection.class)){
				return isEmpty((Collection) o);
			}else{
				if(o.getClass().equals(String.class)){
					return isEmpty((String) o);
				}
			}

		}


		return false;
	}

	public static boolean isEmpty(Collection<?> o){
		if(isNull(o)){
			return true;
		}
		return o.isEmpty();
	}
	/**
	 * verifica se o int é vazio, bem no caso do int verifica se ele é diferente de zero
	 * @param i
	 * @return	true, se o int for 0.
	 */
	public static boolean isEmpty(int i) {
		if(isNull(i)){

			return true;

		}else {

			return i==0;

		}
	}

	/**
	 * verifica se a estring é vazia
	 * @param str
	 * @return	true, se a string for vazia ou nula.
	 */
	public static boolean isEmpty(String str) {
		if(isNull(str)){
			return true;
		}else {
			return str.trim().isEmpty();
		}
	}

	/**
	 * verifica se o objeto é nulo
	 * 
	 * @param o 
	 * @return	true se objecto for nulo.
	 */
	public static boolean isNull(Object o) {
		return o == null;
	}

	public static boolean isNotEmpty(int[] codigo) {
		if(isNotNull(codigo)){
			return codigo.length > 0;
		}
		return false;
	}

	public static boolean isNotEmpty(List<?> list) {
		if(isNotNull(list)){
			return !list.isEmpty();
		}
		return false;
	}

	public static boolean isNotEmpty(Number numberValue) {
		if(isNotNull(numberValue)){
			return numberValue.doubleValue() > 0;
		}
		return false;
	}

	public static String getString(Object idCampanhaParceiro) {

		if (ObjectHelper.isNotNull(idCampanhaParceiro)) {
			return String.valueOf(idCampanhaParceiro);
		}

		return null;
	}
	public static boolean isNotEmpty(Object object) {

		if (ObjectHelper.isNotNull(object)) {
			if(object instanceof String){
				return isNotEmpty(String.valueOf(object));
			}else{
				if(object instanceof Number){
					return isNotEmpty((Number) object);

				}
			}
		}

		return false;
	}
}
